]> dgit.raspbian.org Git - gnome-shell.git/commitdiff
overview: Avoid entering in overview mode during display grab op
authorCarlos Garnacho <carlosg@gnome.org>
Tue, 26 Apr 2022 11:09:01 +0000 (13:09 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Tue, 26 Apr 2022 11:32:31 +0000 (13:32 +0200)
ClutterGrab and display grab operations are pretty much mutually
exclusive, but there's no mechanism to ensure a ClutterGrab does
not step on top of an existing grab operation.

This looks the only place that could trigger that (e.g. start
dragging window, then move pointer to top/left corner), so skip
over the situation here explicitly.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5397
Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5181
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2281>

js/ui/overview.js

index 96ccde521977733ed495468958a5fa7be3272e12..4e86860ca5d6cf8af3dc861d1cf217b04b97c997 100644 (file)
@@ -448,8 +448,14 @@ var Overview = class {
         if (this._shown) {
             let shouldBeModal = !this._inXdndDrag;
             if (shouldBeModal && !this._modal) {
-                let actionMode = Shell.ActionMode.OVERVIEW;
-                let grab = Main.pushModal(global.stage, { actionMode });
+                if (global.display.get_grab_op() !== Meta.GrabOp.NONE) {
+                    this.hide();
+                    return false;
+                }
+
+                const grab = Main.pushModal(global.stage, {
+                    actionMode: Shell.ActionMode.OVERVIEW,
+                });
                 if (grab.get_seat_state() !== Clutter.GrabState.NONE) {
                     this._grab = grab;
                     this._modal = true;